// pages/home/home.js
const userDao = require('../../dao/userDao')
import util from '../../utils/util'
import userMock from '../../datas/users-mock'
const app = getApp()
Page({
  page: 0,
  isLoading: false,
  pageCount: 2,

  /**
   * 页面的初始数据
   */
  data: {
    hidden: false,
    footerText: '加载中...',
    listHeight: 350,
    users: userMock.data,
    topUsers: []
  },

  loadMore: function () {
    console.log('loadMore', this.page, this.pageCount)
    
    if (this.page >= this.pageCount) {
      this.setData({
        footerText: '没有更多数据',
        hidden: true
      })
      return
    }
    
    if (this.isLoading) {
      return;
    }
    this.requeryUsers()
  },

  /**
   * 请求网络数据
   */
  async requeryUsers() {
    this.isLoading = true
    wx.stopPullDownRefresh()
    console.log('requeryUsers')
    this.setData({
      hidden: false
    })
    //获取用户数据
    userDao.skipGet(this.page).then(res => {
      console.log(res.data)
      this.page++
      this.isLoading = false
      this.triggelike(res.data)
    }).catch(res => console.log(res))
  },

  

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //获取 本地用户信息
    let userInfo = util.hasCache(app.keys.userInfo)
    if (userInfo) {
      app.data.userInfo = userInfo
    }
    let currentUser = util.hasCache(app.keys.currentUser)
    if (currentUser) {
      app.data.currentUser = currentUser
    }
    this.requeryUsers()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    let systemInfo = wx.getSystemInfoSync()
    let pxToRpxScale = 750 / systemInfo.windowWidth;
    this.setData({
      listHeight: systemInfo.windowHeight * pxToRpxScale - 250
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    //获取用户数据
    userDao.where({isTop: true}).then(res => {
      console.log(res.data)
      this.setData({
        topUsers: res.data
      })
    })
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.page = 0
    this.requeryUsers()
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  /**
   * 上墙的逻辑 -----------------------------------
   */

  bindToTop() {
    wx.navigateTo({
      url: '../user-album/user-album',
    })
  },

  /**
   * 1, 首页请求数据后，处理喜欢字段
   * 2，user-item，点击喜欢按钮后，请求用户信息后，回调到这里
   * @param {*} userData 
   */
  triggelike(userData) {
    if (!Array.isArray(userData)) {
      userData = this.data.users
    }
    //已经缓存了 用户基础数据
    let cacheUser = app.data.currentUser
    if (cacheUser) {
      let likeList = cacheUser.like
      let userList = userData.map(e => {
        if (likeList.indexOf(e._openid) != -1) {
          e.islike = true
          return e
        } else {
          return e
        }
      })
      this.setData({
        users: this.data.users.concat(userList),
        hidden: true
      })
    } else {
      //未登陆, 设置默认的不带喜欢字段的数据
      this.setData({
        users: this.data.users.concat(userData),
        hidden: true
      })
    }

  },

})